package com.lefeng.cockpit.datax.service;

import com.didiglobal.logi.security.common.Result;
import com.lefeng.cockpit.common.bean.dto.meta.MetaDTO;

import java.io.IOException;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;

public interface MetadataService {
    /**
     * 根据数据源id获取mongo库名
     */
    Result<List<String>> getDBs(Integer datasourceId) throws IOException;

    /**
     * 根据数据源id,dbname获取CollectionNames
     */
    Result<List<String>> getCollectionNames(Integer datasourceId, String dbName) throws IOException;

    /**
     * 根据数据源id获取 db schema
     */
    Result<List<String>> getTableSchema(Integer datasourceId) throws IOException;

    /**
     * 根据数据源id获取可用表名
     */
    Result<List<String>> getTables(Integer datasourceId, String tableSchema) throws IOException;

    /**
     * 根据数据源id和表名获取所有字段
     */
    Result<List<String>> getColumns(Integer datasourceId, String tableName) throws IOException;

    /**
     * 根据数据源id和sql语句获取所有字段
     */
    Result<List<String>> getColumnsByQuerySql(Integer datasourceId, String querySql) throws SQLException;

    /**
     * 获取样例数据
     */
    Result<Map<String, Object>> getSample(MetaDTO metaDTO);
}
